home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / demos / VisualAge for Java 2.0 Entry / setup / data1.cab / ide-e / IDE / cache / SD5Q4H (.txt) < prev    next >
Encoding:
Java Class File  |  1998-09-16  |  5.8 KB  |  288 lines

  1. package com.sun.java.swing;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.event.InputEvent;
  5. import java.awt.event.KeyEvent;
  6. import java.io.Serializable;
  7.  
  8. public class KeyStroke implements Serializable {
  9.    private static final Object pressedCharCacheKey = new StringBuffer("KeyStroke.pressedCharCacheKey");
  10.    private static final Object releasedCharCacheKey = new StringBuffer("KeyStroke.releasedCharCacheKey");
  11.    private static final Object pressedCodeCacheKey = new StringBuffer("KeyStroke.pressedCodeCacheKey");
  12.    private static final Object releasedCodeCacheKey = new StringBuffer("KeyStroke.releasedCodeCacheKey");
  13.    char keyChar;
  14.    int keyCode;
  15.    int modifiers;
  16.    boolean onKeyRelease;
  17.    static final int MIN_ASCII_CACHE_INDEX = 10;
  18.    static final int MAX_ASCII_CACHE_INDEX = 127;
  19.    static Class class$com$sun$java$swing$KeyStroke;
  20.  
  21.    private KeyStroke() {
  22.    }
  23.  
  24.    static void cacheKeyCharKeyStroke(KeyStroke ks, boolean onKeyRelease) {
  25.       if (ks.keyChar >= '\n' && ks.keyChar < 127) {
  26.          Class var10000 = class$com$sun$java$swing$KeyStroke;
  27.          if (var10000 == null) {
  28.             try {
  29.                var10000 = Class.forName("com.sun.java.swing.KeyStroke");
  30.             } catch (ClassNotFoundException var7) {
  31.                throw new NoClassDefFoundError(((Throwable)var7).getMessage());
  32.             }
  33.  
  34.             class$com$sun$java$swing$KeyStroke = var10000;
  35.          }
  36.  
  37.          synchronized(var10000){}
  38.  
  39.          try {
  40.             if (onKeyRelease) {
  41.                KeyStroke[] releasedKeyCharKeyStrokeCache = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
  42.                if (releasedKeyCharKeyStrokeCache == null) {
  43.                   releasedKeyCharKeyStrokeCache = new KeyStroke[117];
  44.                   SwingUtilities.appContextPut(releasedCharCacheKey, releasedKeyCharKeyStrokeCache);
  45.                }
  46.  
  47.                releasedKeyCharKeyStrokeCache[ks.keyChar - 10] = ks;
  48.             } else {
  49.                KeyStroke[] pressedKeyCharKeyStrokeCache = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
  50.                if (pressedKeyCharKeyStrokeCache == null) {
  51.                   pressedKeyCharKeyStrokeCache = new KeyStroke[117];
  52.                   SwingUtilities.appContextPut(pressedCharCacheKey, pressedKeyCharKeyStrokeCache);
  53.                }
  54.  
  55.                pressedKeyCharKeyStrokeCache[ks.keyChar - 10] = ks;
  56.             }
  57.          } catch (Throwable var6) {
  58.             throw var6;
  59.          }
  60.       }
  61.  
  62.    }
  63.  
  64.    static void cacheKeyStroke(KeyStroke ks) {
  65.       int subIndex = -1;
  66.       if (ks.keyCode >= 10 && ks.keyCode < 127 && (subIndex = subIndexForModifier(ks.modifiers)) != -1) {
  67.          Class var10000 = class$com$sun$java$swing$KeyStroke;
  68.          if (var10000 == null) {
  69.             try {
  70.                var10000 = Class.forName("com.sun.java.swing.KeyStroke");
  71.             } catch (ClassNotFoundException var8) {
  72.                throw new NoClassDefFoundError(((Throwable)var8).getMessage());
  73.             }
  74.  
  75.             class$com$sun$java$swing$KeyStroke = var10000;
  76.          }
  77.  
  78.          synchronized(var10000){}
  79.  
  80.          try {
  81.             KeyStroke[][] cache = null;
  82.             if (ks.onKeyRelease) {
  83.                KeyStroke[][] pressedKeyCodeKeyStrokeCache = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
  84.                if (pressedKeyCodeKeyStrokeCache == null) {
  85.                   pressedKeyCodeKeyStrokeCache = new KeyStroke[4][117];
  86.                   SwingUtilities.appContextPut(pressedCodeCacheKey, pressedKeyCodeKeyStrokeCache);
  87.                }
  88.  
  89.                cache = pressedKeyCodeKeyStrokeCache;
  90.             } else {
  91.                KeyStroke[][] releasedKeyCodeKeyStrokeCache = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
  92.                if (releasedKeyCodeKeyStrokeCache == null) {
  93.                   releasedKeyCodeKeyStrokeCache = new KeyStroke[4][117];
  94.                   SwingUtilities.appContextPut(releasedCodeCacheKey, releasedKeyCodeKeyStrokeCache);
  95.                }
  96.  
  97.                cache = releasedKeyCodeKeyStrokeCache;
  98.             }
  99.  
  100.             cache[subIndex][ks.keyCode - 10] = ks;
  101.          } catch (Throwable var7) {
  102.             throw var7;
  103.          }
  104.       }
  105.  
  106.    }
  107.  
  108.    public boolean equals(Object anObject) {
  109.       if (anObject instanceof KeyStroke) {
  110.          KeyStroke ks = (KeyStroke)anObject;
  111.          if (ks.keyChar == this.keyChar && ks.keyCode == this.keyCode && ks.onKeyRelease == this.onKeyRelease && ks.modifiers == this.modifiers) {
  112.             return true;
  113.          }
  114.       }
  115.  
  116.       return false;
  117.    }
  118.  
  119.    static KeyStroke getCachedKeyCharKeyStroke(char keyChar, boolean onKeyRelease) {
  120.       KeyStroke result = null;
  121.       if (keyChar >= '\n' && keyChar < 127) {
  122.          Class var10000 = class$com$sun$java$swing$KeyStroke;
  123.          if (var10000 == null) {
  124.             try {
  125.                var10000 = Class.forName("com.sun.java.swing.KeyStroke");
  126.             } catch (ClassNotFoundException var7) {
  127.                throw new NoClassDefFoundError(((Throwable)var7).getMessage());
  128.             }
  129.  
  130.             class$com$sun$java$swing$KeyStroke = var10000;
  131.          }
  132.  
  133.          synchronized(var10000){}
  134.  
  135.          try {
  136.             KeyStroke[] cache;
  137.             if (onKeyRelease) {
  138.                cache = (KeyStroke[])SwingUtilities.appContextGet(releasedCharCacheKey);
  139.             } else {
  140.                cache = (KeyStroke[])SwingUtilities.appContextGet(pressedCharCacheKey);
  141.             }
  142.  
  143.             if (cache != null) {
  144.                result = cache[keyChar - 10];
  145.             }
  146.          } catch (Throwable var8) {
  147.             throw var8;
  148.          }
  149.       }
  150.  
  151.       return result;
  152.    }
  153.  
  154.    static KeyStroke getCachedKeyStroke(int keyCode, int modifiers, boolean onKeyRelease) {
  155.       KeyStroke result = null;
  156.       int subIndex;
  157.       if (keyCode >= 10 && keyCode < 127 && (subIndex = subIndexForModifier(modifiers)) != -1) {
  158.          Class var10000 = class$com$sun$java$swing$KeyStroke;
  159.          if (var10000 == null) {
  160.             try {
  161.                var10000 = Class.forName("com.sun.java.swing.KeyStroke");
  162.             } catch (ClassNotFoundException var9) {
  163.                throw new NoClassDefFoundError(((Throwable)var9).getMessage());
  164.             }
  165.  
  166.             class$com$sun$java$swing$KeyStroke = var10000;
  167.          }
  168.  
  169.          synchronized(var10000){}
  170.  
  171.          try {
  172.             KeyStroke[][] cache;
  173.             if (onKeyRelease) {
  174.                cache = (KeyStroke[][])SwingUtilities.appContextGet(pressedCodeCacheKey);
  175.             } else {
  176.                cache = (KeyStroke[][])SwingUtilities.appContextGet(releasedCodeCacheKey);
  177.             }
  178.  
  179.             if (cache != null) {
  180.                result = cache[subIndex][keyCode - 10];
  181.             }
  182.          } catch (Throwable var10) {
  183.             throw var10;
  184.          }
  185.       }
  186.  
  187.       return result;
  188.    }
  189.  
  190.    public char getKeyChar() {
  191.       return this.keyChar;
  192.    }
  193.  
  194.    public int getKeyCode() {
  195.       return this.keyCode;
  196.    }
  197.  
  198.    public static KeyStroke getKeyStroke(char keyChar) {
  199.       return getKeyStroke(keyChar, false);
  200.    }
  201.  
  202.    public static KeyStroke getKeyStroke(char keyChar, boolean onKeyRelease) {
  203.       KeyStroke result = getCachedKeyCharKeyStroke(keyChar, onKeyRelease);
  204.       if (result == null) {
  205.          result = new KeyStroke();
  206.          result.keyChar = keyChar;
  207.          result.modifiers = 0;
  208.          result.onKeyRelease = onKeyRelease;
  209.          cacheKeyCharKeyStroke(result, onKeyRelease);
  210.       }
  211.  
  212.       return result;
  213.    }
  214.  
  215.    public static KeyStroke getKeyStroke(int keyCode, int modifiers) {
  216.       return getKeyStroke(keyCode, modifiers, false);
  217.    }
  218.  
  219.    public static KeyStroke getKeyStroke(int keyCode, int modifiers, boolean onKeyRelease) {
  220.       KeyStroke result = getCachedKeyStroke(keyCode, modifiers, onKeyRelease);
  221.       if (result == null) {
  222.          result = new KeyStroke();
  223.          result.keyCode = keyCode;
  224.          result.modifiers = modifiers;
  225.          result.onKeyRelease = onKeyRelease;
  226.          cacheKeyStroke(result);
  227.       }
  228.  
  229.       return result;
  230.    }
  231.  
  232.    public static KeyStroke getKeyStroke(String representation) {
  233.       return null;
  234.    }
  235.  
  236.    public static KeyStroke getKeyStrokeForEvent(KeyEvent anEvent) {
  237.       KeyStroke ks = null;
  238.       switch (((AWTEvent)anEvent).getID()) {
  239.          case 400:
  240.             ks = getKeyStroke(anEvent.getKeyChar());
  241.             break;
  242.          case 401:
  243.             ks = getKeyStroke(anEvent.getKeyCode(), ((InputEvent)anEvent).getModifiers(), false);
  244.             break;
  245.          case 402:
  246.             ks = getKeyStroke(anEvent.getKeyCode(), ((InputEvent)anEvent).getModifiers(), true);
  247.       }
  248.  
  249.       return ks;
  250.    }
  251.  
  252.    public int getModifiers() {
  253.       return this.modifiers;
  254.    }
  255.  
  256.    private static String getStringRepresentation(char keyChar, int modifiers, boolean kr) {
  257.       return "keyChar " + KeyEvent.getKeyModifiersText(modifiers) + keyChar + (kr ? "-R" : "-P");
  258.    }
  259.  
  260.    private static String getStringRepresentation(int keyCode, int modifiers, boolean kr) {
  261.       return "keyCode " + KeyEvent.getKeyModifiersText(modifiers) + KeyEvent.getKeyText(keyCode) + (kr ? "-R" : "-P");
  262.    }
  263.  
  264.    public int hashCode() {
  265.       return (this.keyChar + 1) * 2 * (this.keyCode + 1) * (this.modifiers + 1) + (this.onKeyRelease ? 1 : 2);
  266.    }
  267.  
  268.    public boolean isOnKeyRelease() {
  269.       return this.onKeyRelease;
  270.    }
  271.  
  272.    static int subIndexForModifier(int modifiers) {
  273.       if (modifiers == 0) {
  274.          return 0;
  275.       } else if (modifiers == 1) {
  276.          return 1;
  277.       } else if (modifiers == 2) {
  278.          return 2;
  279.       } else {
  280.          return modifiers == 8 ? 3 : -1;
  281.       }
  282.    }
  283.  
  284.    public String toString() {
  285.       return this.keyChar == 0 ? getStringRepresentation(this.keyCode, this.modifiers, this.onKeyRelease) : getStringRepresentation((char)this.keyChar, 0, this.onKeyRelease);
  286.    }
  287. }
  288.